\section{Server}
These scripts are intended to be used having connected directly to the server via telnet. Depending on the particular telnet client used, it should be possible to simply paste the contents of the entire script directly into the client.

\textbf{Account Management Test}
\begin{quote}
\verb+CA_REGISTER:0:TestUser@mail.com:TestPassword+\newline
\verb+CA_LOGIN:1:TestUser@mail.com:TestPassword+\newline
\end{quote}
Confirm that the user has in fact been logged in by testing other commands such as the tests following this one, and that the server has responded with all true responses.
\begin{quote}
\verb+CA_LOGOUT:2+\newline
\end{quote}
Confirm that the connection has been closed – the user has been logged out. Reconnect and attempt to login once more, confirm that the client has logged in in a similar way as before.

\textbf{Basic Channel Test}

\begin{quote}
\verb+CA_JOIN:0:testchannel+\newline
\verb+CA_MSG:1:testchannel:Hello! This is a test message! ::)+\newline
\verb+CA_LEAVE:2:testchannel+\newline
\end{quote}
Test with multiple clients after having logged in on each client. Confirm that each client receives a notification of other users joining and leaving the channel. Confirm that each client receives the sent message.

\textbf{Extended Channel Test}

On an already logged in client (client A):
\begin{quote}
\verb+CA_JOIN:0:testchannel+\newline
\verb+CA_LOCK:1:testchannnel:TRUE+\newline
\end{quote}
On another logged in client (client B), attempt to join the channel. Confirm that client B cannot join as it is locked. On client A:

\begin{quote}
\verb+CA_INVITE:2:clientB:testchannel+\newline
\end{quote}
Confirm that client B has received the notification of the invite. Respond to the invite with TRUE and attempt to join the channel once more. Confirm that the client B could join that channel and that the join notification had been sent to client A. On client A or B:

\begin{quote}
\verb+CA_LOCK:3:testchannnel:FALSE+\newline
\end{quote}
On an additionally logged in client (client C), confirm that client C can now join that channel without an invite and that the join notification is sent to client A and client B correctly. On client A, B or C:

\begin{quote}
\verb+CR_USERLIST:4:testchannel+\newline
\end{quote}
Confirm that the response lists all three users currently in the channel.

\section{Integration}

Functions to be tested that will ensure the basic/crucial functionality of the system works correctly:

\begin{itemize}
	\item Login
		\begin{enumerate}
			\item Attempts of logging in with an incorrect email or password (registered users only).
			\item Attempts of logging in without registration.
			\item Attempts of logging in with an email of a wrong format.
			\item Log in with the correct data.
		\end{enumerate}

		\item Registration
		\begin{enumerate}
			\item Attempts of providing an email in an incorrect format.
			\item Attempts of providing emails and/or passwords that do not match.
			\item Register with correct data.
		\end{enumerate}

		\item Main
		\begin{enumerate}
			\item Searching for and adding users to, as well as removing users from,  the contact list.
			\item Sending private messages to users.
			\item Creating a channel, naming it and inviting users to it; sending messages within the channel; adding more users to the channel or removing some of the existing ones.
		\end{enumerate}
\end{itemize}

Function to be tested that will ensure the remaining functionality and \textit{should have} requirements work correctly:

\begin{enumerate}
\item Changing status.
\item Uploading/changing an avatar.
\item Changing personal information, such as name.
\item Changing nickname.
\item Changing the display colour of the main window.
\item Sending messages with: changing the style, size and the colour of the text before sending the message, emoticons in the message (both from the menu and using text).
\end{enumerate}

